約 4,587,922 件
https://w.atwiki.jp/ntemacs/pages/63.html
【お知らせ】 2021/08/11 追記 次のリポジトリのコマンドに Windows 11 の対応を行いました。 https //github.com/smzht/wsl-utils 2021/02/05 追記 本ページの内容は WSL2 でも動作します。DrvFs や VolFs の記載がある場合には、Windows 側のファイルシステム、WSL2 側のファイルシステムと読み替えてください。 2020/10/27 追記 WSL2 では、UNC パスをマウントしているマウントポイント配下がカレントディレクトリの状態で Windows の exe コマンドを実行するとエラー終了します。sglstart にこの対策を行いました。 https //github.com/smzht/wsl-utils/commit/e311996f02f0b7f3939cda933d677e36cf9d1bf6 2018/01/24 追記 この設定の Cygwin版 もあります。お試しください。 singleton な動きをする cygstart 的コマンドを使うための設定 (Cygwin版) 2017/09/15 追記 本設定で紹介しているコマンドは次の設定と一緒に使うことを想定しています。Windows 上のドキュメントファイルを Emacs の dired から開くことができ、開いたファイルの操作を Emacs のキーバインドで行うことができるようになるため、OS 全体を Emacs で操作している感覚となります。本設定と併せ、お試しください。 dired を OS と連携して使うための設定 Windows の操作を Emacs のキーバインドで行うための設定 (Keyhac版) 【本題】 Windows Subsystem for Linux で singleton な動きをする cygstart 的コマンドを使うための設定です。 本コマンドを作成した目的は、「singleton な動きをする cygstart 的コマンドを使うための設定 (Cygwin版)」内の説明を参照ください。この設定の Windows Subsystem for Linux 版 が本コマンドとなります。 1) Windows 10 1903 以降をインストールする。 2) Windows Subsystem for Linux を有効にし、Ubuntu 等の Linux をインストールする。 3) 次の設定に従い、wslstart コマンドをインストールする。 WSL で cygstart 的コマンドを使うための設定 4) 次のリポジトリにある sglstart というスクリプトを wslstart をインストールしたパスと同じ場所に格納する。 https //github.com/smzht/wsl-utils 5) DrvFs ファイルシステム上にフォルダを作成し、そのフォルダのパスを PATH に登録する。そして、そのフォルダに次のリポジトリにある winactivate.exe を配置する。 https //github.com/smzht/win-utils ※ Windows 10 1903 を利用している場合、PATH に登録するパスは DrvFs のフォルダへの実際のパス(シンボリックリンクではないパス)としてください。シンボリックリンクのパスを PATH に登録すると、exe コマンドが実行できなくなります。 6) コマンドの動作の精度を高めるため、次の説明に従い「ファイル名の拡張子を表示する」設定を行う。 https //pc-karuma.net/windows-10-show-explorer-file-name-extension/ ※ 設定を行わなくてもコマンドは動作しますが、suffix だけが異なる名前をもつ複数のファイルを開いている際などの動作精度が高まりますので、設定することをお薦めします。 7) WSL 上で sglstart filename を複数回実行し、singleton な動きをする cygstart 的コマンドとして機能することを確認する。 なお、本設定は Emacs の dired-open パッケージや「dired を OS と連携して使うための設定」 と連携することを目的として作成しました。Emacs の dired と連携しなければ利用場面が限られ、あまり有効な設定ではないかもしれません。 変更履歴 2016/09/21 このページを作成した。 2016/10/08 drvfs_access_only=1 の際に lxss_path の設定等の無駄な処理が行われないように改善した。 2017/05/23 Windows 10 1703 用にスクリプトの見直しを行った。 2017/09/14 開くファイルが VolFs ファイルシステム上にある場合でも、そのファイルを DrvFs ファイルシステム上にあるテンポラリフォルダ配下に複写し、起動できるように対応した。 2017/09/15 本コマンドから起動したアプリにフォーカスが移らないことがある場合の対策を行った。 2017/09/15 空白を含むファイルのオープンに対応した。 2017/09/16 ウィンドウをポップアップする判定条件を見直した。 2017/11/24 ウィンドウをアクティベートする方法を AutoHotKey を使った方法に見直した。 2018/02/28 mount されたネットワークボリュームでもコマンドが正常に実行できるように対応した。 2018/03/23 wsl コマンドの見直しにより、高速化対策を行った。 2019/09/01 sglstart の内部から呼ばれている winactivate.exe コマンドを更新した。
https://w.atwiki.jp/mina2000gt/pages/50.html
Windows 7でのFortranのコンパイルは、無料でやるならCygWinとかを使うのが普通みたいです。 お金を出すなら、 Fortran Builder がありますが、ゲロが出るほど、高かったです。(アカデミックで約60000円) というわけで、Cygwinのインストールを使ってみたいと思います。 (i)エクスプローラにftp //ftp.jaist.ac.jp/pub/cygwin/を入力して、Cygwinのファイル一覧を開く。 (ii)releaseフォルダとSetup.iniをダウンロードする。 (iii)Cygwinのページのページから、Setup.exeをダウンロードする。 (iv)Setup.exeを実行する (v)"Choose Installation Type"画面で、"Install from Local Directory"にチェックする。 (vi)Cygwinをインストールする場所を指定する。 (vii)ライブラリの場所として、(ii)でダウンロードしたフォルダを指定する。 (viii)インストールするパッケージを選択する。 (ix)初めてのインストールの場合は、インストールを続行する。 (x)Fortranのコンパイルのテストを行う。(C言語も行えます!) Fortranサンプル(area.f) $ g77 -o area area.f (コンパイル) $ ./area (実行) C言語サンプル(area.c) $ gcc -o area area.c -lm (コンパイル) $ ./area (実行) しかし、これでは、windowsネイティブな実行ファイルが作れないのであった・・・ そこで、gfortranの導入を試してみる。 (i)TDM-GCCを開く (ii)"Download TDM-GCC"をクリックして、開いた画面で、"tdm-gcc-4.7.1-2"を選択する (iii)適当な場所にダウンロードする (iv)ダウンロードしたファイルを実行する (v)"Create"をクリックする (vi)"MinGW-w64/TDM64 Experimental (32-bit and 64-bit)"を選択する (vii)インストールするフォルダを入力する (viii)ファイルをダウンロードするサイトを選択する (ix)インストールするコンポーネントを選択する(gfortranを必ず選ぶこと) (x)道なりにインストールする インストールされていることの確認。 (i)[スタート]→[すべてのプログラム]→[アクセサリ]→[コマンドプロンプト]でコマンドプロンプトが起動する (ii)コマンドラインに "gfortran -v" と打ち込んで [Enter] を押す (iii)"Using built-in specs."以下の文言が出てくればOK
https://w.atwiki.jp/nkym_memo/pages/36.html
バッファ テキストを編集する単位 Emacsではファイルを開くとそのファイルはバッファに格納される バッファの変更状態 モードライン上のバッファ名の左側の表示で確認可 「--」 バッファ未変更 「**」 バッファ変更済み 「%%」 読み込み専用バッファ 「%*」 読み込み専用バッファが変更済み バッファ操作のキーバインド キーバインド 説明 コマンド名 C-x C-f ファイルを開く find-file C-x b バッファを切り替える switch-to-buffer C-x k バッファを削除する kill-buffer C-x C-b バッファの一覧を表示 list-buffers C-x C-s 保存 save-buffer C-x s すべて保存 save-some-buffers C-x i 取り込み(カーソルにファイルの内容を挿入) insert-file C-x C-v 現在のバッファを閉じて、別のファイルを開く find-alternate-file C-x C-w 別名で保存 write-file バッファで取り込んでいるファイルの名前を変更 set-visited-file-name 最近使ったばかりのファイルを開く(recentf-ext.el) 最近開いたファイルを一覧をバッファで表示する。先頭10ファイルは数字を入力することで直接開くことができる。それ以外はポイントを移動してRETで選択。 ;;; install-elisp-from-emacswiki recentf-ext.el (setq recentf-max-saved-items 3000) ;; 最近使ったファイルに加えないファイルを正規表現で指定する (setq recentf-exclude '("/TAGS$" "/var/tmp/")) (require 'recentf-ext) ;; f8をショートカットキーに (global-set-key [f8] 'recentf-open-files) ウィンドウ操作 キーバインド 説明 コマンド C-x 2 ウィンドウを上下に分割 split-window-vertically C-x 3 ウィンドウを左右に分割 split-window-horizontally C-x 1 分割の解除 delete-other-windows C-x 0 選択されたウィンドウの消去 delete-window C-x o 次のウィンドウを選択・移動 other-window C-x 4 b バッファ名 別のウィンドウでバッファを選択 switch-to-buffer-other-window C-x 4 f 別のウィンドウでファイルを開く find-file-other-window C-x 4 r 別のウィンドウでファイルを読み込み専用で開く find-file-read-only-ohter-window ウィンドウを左右分割する(follow-mode) C-x 3(split-window-horizontally)で左右分割した状態で 溢れた内容を右につなぐ M-x follow-mode ウィンドウを3分割する C-+で幅を揃えられるので、1画面の状態から以下のようなコマンドで3分割できる。 C-x 3 C-x 3 C-x + フレーム キーバインド 説明 コマンド C-x 5 2 新しいフレームの作成 make-frame C-x 5 0 現在のフレームの消去 delete-frame C-x 5 1 他のすべてのフレームの消去 delete-other-frames C-x 5 o 別のフレームに移動 other-frame C-x 5 b バッファ名 新しいフレームでバッファを選択 switch-to-buffer-other-frame C-x 5 f ファイル名 新しいフレームでファイルを開く find-file-other-window C-x 5 r ファイル名 新しいフレームでファイルを読み込み専用で開く find-file-read-only-other-window フルスクリーン(fullscreen.el) F11でフルスクリーンを切り替え M-x install-elisp-from-emacswiki fullscreen.el .emacsに追加 (require fullscreen) 色の変更 現在行の背景色 (set-face-background hl-line "DarkSeaGreen1") 色の一覧 M-x list-colors-display 画面の色を変える http //homepage.mac.com/zenitani/elisp-j.html#color 色名一覧 http //life.a.la9.jp/hp/color/rgb-tab.html http //web.njit.edu/~kevin/rgb.html 参考文献 Emacsテクニックバイブル〜作業効率をカイゼンする200の技〜(るびきち,2010,技術評論社) Emacs辞典 Emacs Emacs Lisp 操作・カスタマイズリファレンス(佐藤竜一,2006,翔泳社) 便利なツール Emacsらくらく入門(藤原誠,2004,技術評論社) 参考URL EmacsLisp Tips(Seiji Zenitani) http //homepage.mac.com/zenitani/elisp-j.html
https://w.atwiki.jp/shunbo/pages/29.html
Emacsキーバインド覚書き 起動 % emacs 終了 C-x C-c ファイル操作 C-x C-f ファイルを開く C-x C-s ファイルを保存 ウィンドウ分割 C-x 2 2行に分割 C-x 3 2列に分割 C-x 0 カーソルがある方の分割したウィンドウを閉じる C-x 1 カーソルのない方の分割したウィンドウを閉じる C-x 5 2 もう一つのemacsウィンドウを立ち上げる(けっこう使う) shellの起動 M-x shell emacs上でshellを起動する exit shell起動して、exitで終了
https://w.atwiki.jp/cscd/pages/168.html
研究室に伝わるDAQプログラムを読むために、Fortranを復習してみた。IMPLICIT文とかあったなあそんなの。 2回生のときに出た化学プログラミングという授業のプリントを見返してみると、Fortranのプログラムの構造は以下のような感じ。 PROGRAM PGNAME IMPLICIT REAL*8 R, INTEGER*4 I CHARACTER COMMON DIMENSION FORMAT C ここまで宣言文 READ WRITE とかいろいろ STOP END
https://w.atwiki.jp/cupnes/pages/60.html
;====================================================================== ; 言語・文字コード関連の設定 ;====================================================================== (when (equal emacs-major-version 21) (require un-define)) (set-language-environment "Japanese") (set-terminal-coding-system utf-8) (set-keyboard-coding-system utf-8) (set-buffer-file-coding-system utf-8) (setq default-buffer-file-coding-system utf-8) (prefer-coding-system utf-8);;UTF-8優先 (set-default-coding-systems utf-8) (setq file-name-coding-system utf-8) ;======================================================================= ; Misc ;======================================================================= (mouse-wheel-mode);;ホイールマウス (global-font-lock-mode t);;文字の色つけ (setq line-number-mode t);;カーソルのある行番号を表示 (auto-compression-mode t);;日本語infoの文字化け防止 (set-scroll-bar-mode right);;スクロールバーを右に表示 (global-set-key "\C-h" backward-delete-char);;Ctrl-Hでバックスペース (setq visible-bell nil);;ヴィジュアルベル無効 (setq ring-bell-function (lambda ()));;ビープ音も無効 (when (boundp show-trailing-whitespace) (setq-default show-trailing-whitespace t));;行末のスペースを強調表示 ;; load-pathの設定 (add-to-list load-path (expand-file-name "~/site-lisp")) ;; 対応する括弧を強調表示 (show-paren-mode t) (setq show-paren-style mixed) ;(set-face-background show-paren-match-face "gray10") (set-face-background show-paren-match-face "lawn green") (set-face-foreground show-paren-match-face "light sea green") (set-face-background show-paren-mismatch-face "magenta") (set-face-foreground show-paren-mismatch-face "firebrick") ;; ツールバーを表示しない (tool-bar-mode 0) ;; メニューを消したい (menu-bar-mode -1) ;; 時計の設定 (setq display-time-string-forms ((substring year -2) "/" month "/" day " " dayname " " 24-hours " " minutes)) (display-time) ;; "Lisp nesting exceeds max-lisp-eval-depth"への対処 (setq max-lisp-eval-depth 1000) ;; "Variable binding depth exceeds max-specpdl-size"への対処 (setq max-specpdl-size 1867) ;; バッファの切換えをもっと楽にしたい − iswitchb ;; (iswitchb-default-keybindings) (iswitchb-mode 1) ;; 列数を表示する (column-number-mode t) ;; スタートアップ時のメッセージを抑制 (setq inhibit-startup-message t) ;; https //github.com/typester/emacs-config/blob/master/conf/init.el ;; % で対応する括弧に移動 (defun match-paren (arg) "Go to the matching paren if on a paren; otherwise insert %." (interactive "p") (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1)) ((looking-at "\\s\)") (forward-char 1) (backward-list 1)) (t (self-insert-command (or arg 1))))) (define-key global-map (kbd "C-5") match-paren) ;; C-t でother-window、分割されてなかったら分割 (defun other-window-or-split () ; http //d.hatena.ne.jp/rubikitch/20100210/emacs (interactive) (when (one-window-p) (split-window-horizontally)) (other-window 1)) (define-key global-map (kbd "C-t") other-window-or-split) ;; scratchの初期メッセージ消去 (setq initial-scratch-message "") ;; タイトルバーにファイルのフルパス表示 (setq frame-title-format (format "%%f - Emacs@%s" (system-name))) ;; 最近使ったファイルをメニューに表示 (recentf-mode t) ;; 最近使ったファイルの表示数 (setq recentf-max-menu-items 10) ;; 最近開いたファイルの保存数を増やす (setq recentf-max-saved-items 3000) ;; ミニバッファの履歴を保存する (savehist-mode 1) ;; ミニバッファの履歴の保存数を増やす (setq history-length 3000) ;; デフォルトのタブ幅を半角スペース4つ分に (setq default-tab-width 4) ;; c-modeの設定 (setq c-default-style "linux" c-basic-offset 4) ;; - http //d.hatena.ne.jp/syohex/20110624/1308871777 ;; c-modeの自動インデントをデフォルトで無効化 ;; 有効/無効はC-c C-lで切り替え ;; (add-hook c-mode-hook ;; (lambda () ;; (c-toggle-electric-state -1))) ;; auto-installの設定 (add-to-list load-path (expand-file-name "~/.emacs.d/auto-install")) (require auto-install) (auto-install-update-emacswiki-package-name t) (auto-install-compatibility-setup) (setq ediff-window-setup-function ediff-setup-windows-plain) ;; cmigemoの設定 ;; http //qiita.com/kenbeese/items/ebbf0128d7c752a94a22 (setq migemo-dictionary "/usr/local/share/migemo/utf-8/migemo-dict") (setq migemo-command "cmigemo") (setq migemo-options ("-q" "--emacs")) (setq migemo-user-dictionary nil) (setq migemo-coding-system utf-8) (setq migemo-regex-dictionary nil) (load-library "migemo") (migemo-init) ;; ;; anything.elの設定 ;; (require anything-startup) ;; auto-complete-mode.elの設定 (add-to-list load-path "~/.emacs.d/") (require auto-complete-config) (add-to-list ac-dictionary-directories "~/.emacs.d//ac-dict") (ac-config-default) ;; GNU GLOBAL(gtags.el)の設定(ここから) (add-to-list load-path "~/site-lisp") (autoload gtags-mode "gtags" "" t) (setq gtags-mode-hook (lambda () (local-set-key "\M-t" gtags-find-tag) (local-set-key "\M-r" gtags-find-rtag) (local-set-key "\M-s" gtags-find-symbol) (local-set-key "\C-t" gtags-pop-stack))) ;; (add-hook gtags-mode-hook ;; (lambda () ;; ; Local customization (overwrite key mapping) ;; (define-key gtags-mode-map "\C-f" scroll-up) ;; (define-key gtags-mode-map "\C-b" scroll-down) ;; )) (add-hook gtags-select-mode-hook (lambda () (setq hl-line-face underline) (hl-line-mode 1))) (add-hook c-mode-hook (lambda () (gtags-mode 1) (gtags-make-complete-list))) ; Customization (setq gtags-suggested-key-mapping t) (setq gtags-auto-update t) ;; GNU GLOBAL(gtags.el)の設定(ここまで) ;; Helmの設定 (add-to-list load-path "~/site-lisp/helm") (require helm-config)
https://w.atwiki.jp/ntemacs/pages/60.html
【お知らせ】 2018/09/11 追記 sglstart を使っている場合、内部から呼ばれている winactivate.exe コマンドを更新してください。Emacs のタイトルの影響によるウィンドウのアクティベートの誤動作が解消されます。 https //github.com/smzht/win-utils 2018/01/24 追記 この設定の WSL版 もあります。お試しください。 singleton な動きをする cygstart 的コマンドを使うための設定 (WSL版) 2017/09/15 追記 本設定で紹介しているコマンドは次の設定と一緒に使うことを想定しています。Windows 上のドキュメントファイルを Emacs の dired から開くことができ、開いたファイルの操作を Emacs のキーバインドで行うことができるようになるため、OS 全体を Emacs で操作している感覚となります。本設定と併せ、お試しください。 dired を OS と連携して使うための設定 Windows の操作を Emacs のキーバインドで行うための設定 (Keyhac版) 【本題】 singleton な動きをする cygstart 的コマンドを使うための設定です。 例えば、テキストファイル(サフィックスが .txt のファイル)が Notepad で開く設定になっている場合、同じテキストファイルを複数回開くと別々のウィンドウに開いてしまいます。また、Office2013 や SDI で開くように設定した Office2010 などで同じファイルを開こうとした場合には、開き直すか聞かれたり、既に開いていると警告されたりします。Explorer のように、開くディレクトリが既に開いていればそのウィンドウをポップアップするだけのアプリケーションソフトもありますが、すべてのアプリケーションソフトがそのような動きをする訳ではありません。 この問題を解決するため、singleton な動きをする cygstart 的コマンドを作成してみました。完全な対策とはなっている訳ではありませんが(誤作動の可能性はありますが)、以下の動きとすることで多くの場合の問題を解決しています。 1. 開くターゲットがディレクトリの場合は、そのディレクトリを開く。(Explorer は singleton な動きをするので、敢えて何もしていない。) 2. 開くターゲットがファイルの場合、以下の動きとする。 2-1. 既に開いてるウィンドウのタイトルに開くターゲットファイルの名称が含まれていれば、そのウィンドウをポップアップする。 (この判定が単純な文字列の部分マッチであるため、誤作動する(想定外のウィンドウがポップアップされる)可能性があります。例えば、別なフォルダから同名のファイルを開いている場合など。) 2-2. 2-1 に該当しない場合、そのファイルを開く。(サフィックスから判断される適切なアプリケーションソフトで開かれる。cygstart と同じ動き。) 利用するための設定は以下のとおりです。 1) 次のリポジトリにある sglstart というスクリプトをコマンドパスが通ったフォルダ(~/bin 等)に格納し、必要であれば chmod +x sglstart することにより実行可能とする。 https //github.com/smzht/cyg-utils 2)次のリポジトリにある winactivate.exe というコマンドを上記と同じフォルダに格納する。 https //github.com/smzht/win-utils 3) コマンドの動作の精度を高めるため、次の説明に従い「ファイル名の拡張子を表示する」設定を行う。 http //qa.nifty.com/cs/catalog/faq_nqa/qid_15385/1.htm ※ 設定を行わなくてもコマンドは動作しますが、suffix だけが異なる名前をもつ複数のファイルを開いている際などの動作精度が高まりますので、設定することをお薦めします。 4)Cygwin 上で sglstart filename を複数回実行し、singleton な動きをする cygstart 的コマンドとして機能することを確認する。 なお、本設定は Emacs の dired-open パッケージや「dired を OS と連携して使うための設定」 と連携することを目的として作成しました。Emacs の dired と連携しなければ利用場面が限られ、あまり有効な設定ではないかもしれません。 変更履歴 2015/11/26 このページを作成した。 2015/12/16 フォルダオプションで「ファイルの拡張子を表示しない」設定にしていると正常に動作しなかったので、その対応をした。 2015/12/21 指定したファイルが開いているかどうかの判定方法を一部改善した。 2015/12/24 Office を 2016 にしたところ、ファイルを正常に開けない場合があるので、その対策を行った。 2016/01/04 ポップアップするかどうかを判定するアプリケーションソフトから Emacs を除外した。 2016/02/18 Keyhac for Windows ver 1.71 以降で動作するようにスクリプトを書き換えた。 2016/09/16 本コマンドをとおして Excel ファイルを開こうとしたとき、正常に開かないことがあったので、スクリプトの調整を行った。 2016/09/19 引数に URL を指定した時でも動作するように改善した。 2017/05/23 Keyhac のインストールパスの指定方法を一部変更した。 2017/09/16 ウィンドウをポップアップする判定条件を見直した。 2017/11/24 ウィンドウをアクティベートする方法を AutoHotKey を使った方法に見直した。
https://w.atwiki.jp/selflearn/pages/41.html
( - ) 秀丸からEmacsにエディタ環境を移行するためのチートシート このページでは、秀丸の色々な機能をEmacsではどのように実現するかを記します。 最終更新日:2014年07月23日 (水) 09時54分00秒 前置き 秀丸は良いソフトです 秀丸は言わずとしれた有名エディタで、開発業務を行っている人にとってなくてはならないアプリです(若干の誇張有り)。強力かつ高速な編集機能、かゆいところに手が届く機能、などなど。 これがなければ皆の生産性は半分以下に落ちてしまうと思います(若干の誇張有り)。使いこなせば使いこなすほど馴染んでくる、というカスタマイズ性の高さも素晴らしい。 その辺はおあつらえのIDEじゃ味わえないです。もうね、開発者だったらどんなことがあっても入れて使いこなせるようになっておくべき、とも思うくらい。 バージョンが上がるごとに「この機能がほしかった」というツボな機能が入ってくるところもね。開発者のことを大切にしてくれているな、という気持ちにさせてくれる「分かっている」アプリなのです。 でもね・・・ いいところだらけの秀丸ですが、「Windowsでしか動かない(*1)」という最大かつ致命的な欠点を持っているソフトでもあります。 僕の場合、職場はWindows、自宅ではMacを使っているわけで、つまり自宅での生産性が半分以下に落ちてしまっているわけです(かなりの誇張有り)。とはいっても帰宅してからもWindowsの汚い画面なんか見たくないので、しょうがないです。え、Vista?UACが嫌いだから却下。 趣味で色々とプログラミングをしていると、自宅でも職場と同じような効率で作業したいという心境になってきてしまいます。でもMacに秀丸はない。 しばらく悶々としていました。で、色々試したり考えたりした結果、同じように「馴染み方が半端でない」といわれるEmacsを使っていくことに決めました。理由は、 EmacsならLinuxもWindowsもMacでも同じ操作ができる Xcodeは便利だが、Mac専用なので根本的な解決になっていない(覚える量が2倍になるだけ) Emacsは「カスタマイズできる環境」なので、自分の好きなようにできる viと違いマウスで操作できる です。 というわけでこのページを使って、環境の引っ越しに向けて秀丸の色々な機能をEmacsでどのように実現するかをまとめることにしたのです。 注意 EmacsのターゲットはCarbon Emacsとします。つまり、ここでは特別なもの以外はすでにEmacsに組み込まれているとみなし、導入方法を説明したりはしません。あくまで代替手段のコマンド一覧を示すのみです。 目次 まとめる前によく使っている機能 ゴールの設定 秀丸のそれ、Emacsではどうやるの?ないと困る機能tagsファイルによるジャンプ Grep 関数一覧表示 キー入力の記録&再生 検索履歴による再検索 最後に編集した箇所に移動 検索方向の切り替え キー入力によるファイルの切り替え 文字コード表示&保存 マクロ外コードのグレイアウト ファイルを開いた時に、以前編集していた場所に移動 日付の入力 一括コメントアウト 気になる点タブ文字の入力 行番号の表示 あったらいいなdiff+Mergeを、日本語表示に対応させた上で実現 入力しようとしている名前を補完 選択領域をハイライトまたは反転させる Shift+矢印キーで領域選択する 矩形領域の選択 その他マウスのホイールスクロールを加速させたくない 「最近使ったファイル」をメニューに表示させる 文字列の自動補完 Subversionクライアント 対応する括弧に移動 補足外部からダウンロードした.elファイルをCarbonEmacsにインストールする方法()CarbonEmacsアプリ下に保存(一番手っ取り早いが将来性がない) .emacs.elでパスを指定し、そこに保存する(オススメ) 参考にした情報Special Thanks 書籍 インターネット国内 海外 コメント まとめる前に さて、まとめ資料を作る前に、自分が秀丸のどういう機能を使っているかを洗い出します。 よく使っている機能 まず「この機能はないと困る!」という機能の一覧を考えます。秀丸で馴染んでしまった操作であり外せない機能の一覧です。ただEmacsでどこまで代用できるか分からないので、優先度も付けてみました。 重要度 機能 説明 必須 tagsファイルによるジャンプ C/C++ファイルで、現在のカーソルが示す関数の実態へとジャンプする。バックジャンプも可能 必須 Grep 複数のソースファイルからキーワードにマッチするキーワードを抜き出して、一覧表示する。ここから更にダイレクトジャンプ&バックジャンプができること 必須 関数一覧表示 ファイル内に記載されたCやC++などの関数一覧を別ダイアログorウィンドウで表示しておき、今はどの関数にいるか、マウスクリックによる関数先頭への移動が行える 高 キー入力の記録&再生 あるキー入力をトグルに動作を記録し、その後再生できる 高 検索履歴による再検索 以前使った検索キーワードを使って、再検索する。ダイアログボックスから履歴を選択できる。これにより置換する前に検索で正規表現を試し、実際に使用、というテストファーストな編集ができる 高 最後に編集した箇所に移動 最後にキー入力した箇所にカーソルを移動する。編集中、別の場所でコピーをしてから本機能で編集中の場所に戻ってペースト、というのが非常に簡単。Wordだとコピーしたときの場所を最後の編集箇所として認識されてしまうが、それは違う!わかってない! 中 検索方向の切り替え 検索方向をキー1つで切り替えられる 中 キー入力によるファイルの切り替え キー入力によって、編集対象のファイルを切り替える機能。どのファイルを開いているかもすぐに分かる 中 文字コード表示&保存 開いているファイルの文字コードを常に表示しておく。保存する際も文字コードと改行コードを指定できる 中 マクロ外コードのグレイアウト #if 0や未定義のマクロで括られた部分をグレイアウトする。グレイアウトするかどうかは別途定義しておく必要があるものの、大規模な年老いたソースを読む場合には必須 中 前回編集箇所への移動 ファイルを開いた時に、以前編集していた場所に移動する 低 日付の入力 カーソルの位置に今日の日付を入力する。秀丸ではマクロで実現 低 一括コメントアウト 選択した領域のコメントアウト。秀丸ではマクロで実現 一方でEmacsを少しかじってみると、Emacsのデフォルト設定では次のような振る舞いが気になります。これも直せないか調べてみようと思います。 気になる度 機能 気になる点(どうなってほしいか) 中 タブ文字の入力 Tabキーを入力したときのインデントが空白文字で行われる。これはこれで綺麗だけれど、他のWindows開発者に合わせて、タブ文字でタブを入力したいときもある 中 行番号の表示 Emacsでは行番号をウィンドウ左側に表示できない? 中 選択領域の明示 選択領域をハイライトまたは反転させる。どこが選択領域の最初かなんて覚えていません。 中 PCライクな操作 Shift+矢印キーで領域選択する。記憶のすみでは[始点選択]→[終点選択]という前時代的なインタフェースだった記憶があるので。 中 矩形選択 矩形領域の選択。Emacsで出来るのは知っているけど、入力キーが面倒だし・・・ さらに欲目を出して、こんなことが出来たらという点も挙げてみましょう。 ほしさ度 機能 説明 高 diff Diff+Mergeを、日本語表示に対応させた上で実現する 中 ソースコード補完 tagsファイルなどから、入力しようとしている関数名を補完する機能 でも高望みはしません。まずは秀丸でよく使う機能をまとめてから、です。 ゴールの設定 上記の一覧表から、次をゴールに設定します。 それぞれの表で出た機能を実現する方法を示す秀丸でよく使う機能は必ず探し出す 気になる点も必ず できたらいいなはできるだけ Emacsのキーバインドをできるだけ維持するきっと秀丸と同じ操作性にすることもできるんでしょうが、それだと何か違うと思う 秀丸のそれ、Emacsではどうやるの? ないと困る機能 tagsファイルによるジャンプ etagsでTAGSファイルを作成して、そして・・・とか考えていたけれど、どうやらgtagsというのがヨサゲ。GNU GLOBALと言う、いわばetagsやctagsの高機能版(統合版?)のようなもの。BerkleyDBに関数や変数の定義を登録して、情報を出力してくれるみたい。 注意:gtagsといってもGoogle tagsのことではないので気を付けて(間違えないとは思うけどね)。 インストールは簡単。MacPortsを使って、 $ sudo port install global とするだけ。 そうすると「/opt/local/var/macports/software/global/5.6.2_0/opt/local/share/gtags」ディレクトリの下に「gtags.el」が置かれているので、これをCarbon Emacsのsite-lispディレクトリにコピー。 あとは.emacs.elに ;; GNU global(gtags)の設定 (when (locate-library "gtags") (require gtags)) (global-set-key "\M-t" gtags-find-tag) ;関数の定義元へ (global-set-key "\M-r" gtags-find-rtag) ;関数の参照先へ (global-set-key "\M-s" gtags-find-symbol) ;変数の定義元/参照先へ (global-set-key "\M-p" gtags-find-pattern) (global-set-key "\M-f" gtags-find-file) ;ファイルにジャンプ (global-set-key [?\C-,] gtags-pop-stack) ;前のバッファに戻る (add-hook c-mode-common-hook (lambda () (gtags-mode 1) (gtags-make-complete-list))) と記述しておく。キーバインドは上記のコマンドを参照。 GNU GLOBALの便利なところは、更新したぶんだけTAGファイルを作り直してくれるところ。だから2回目以降は速い、速い。 $ global -u とするだけです。 ただ、現時点ではなぜかcppファイルで「extern "C" {...}」内に定義した関数をタグ(GTAGS)として登録してくれない(*2)。なぜだろう??.globalrcと各コマンドのmanページを読んでみたけど分からない…。 2008/10/29追記 どうやら既知のバグらしいです。MacPortsでのバージョンが5.6.2だったので、Portfileをゴニョゴニョして最新版の5.7.2(2008/9/30リリース)を試してみたのですが、やはり駄目でした。 2008/11/12追記: このバグを直すパッチが採用されたようです。将来のリリースでは問題なくなりそうなので嬉しい。GLOBAL最強。 Grep これを選ぶのは悩みました。最初はgrep-findをしていたけれど、どうも使いづらい(遠回りに作業をしている)感じがしてダメで、しばらくはcolor-moccurを使っていました。 ;; color-moccurの利用宣言と、その設定 ;; (moccur-editもインストールしました) ;; Ref.URL http //www.bookshelf.jp/soft/meadow_50.html#SEC740 ;; - .svnは対象外とする ;; - カーソル付近の単語をデフォルトの検索語にする ;; - 複数の単語を、記入順序に関係なく検索する (load "color-moccur") (setq dmoccur-recursive-search t) (setq moccur-grep-default-word-near-point t) (setq moccur-split-word t) (setq dmoccur-exclusion-mask (append ("\\~$" "\\.svn\\/\*" "\\.o$" "GPATH" "GRTAGS" "GSYMS" "GTAGS") dmoccur-exclusion-mask)) だけど、除外ファイルも一度検索リストに入れられてしまうので遅いという、けっこう重大な欠点があったので次第に使わなくなってしまいました。 で、紆余曲折のすえに現在使っているのは以下の機能。 まずMacPortsで"p5-app-ack"をインストールしてackコマンドが使えるようにしておきます。そして、それとcolor-grep.elを併用して、 grepを高速に。しかも.svnなどの管理ファイルは最初から無視してくれる grep結果バッファでカーソルを移動するだけで別バッファに該当ファイルの行を表示してくれる という機能を満たすことができました。 ;; grep結果バッファでのカーソル移動でダイナミックにファイルを開いてくれる (require color-grep) (setq color-grep-sync-kill-buffer t) ;; M-x grep-findでPerlのackコマンドを使うよう変更 (setq grep-find-command "ack --nocolor --nogroup ") あとは上記機能にmoccur-grep-default-word-near-pointに相当する、コマンド実行時のカーソル近辺の単語を自動入力してくれる機能があれば完璧です。改造して、作れないものだろか。 2008/11/12追記: 「コマンド実行時のカーソル近辺〜」が自作できました。.emacs.elに以下の定義を追加して、M-x grep-by-ackまたはF6キーで実行できるようにしました。 ;; M-x grep-by-ack ;; Perlのackコマンドを使ったgrep(カーソル付近の単語をデフォルトの検索語に) (defun grep-by-ack () "grep the whole directory for something defaults to term at cursor position" (interactive) (setq default-word (thing-at-point symbol)) (setq needle1 (or (read-string (concat "ack for " default-word " ")) default-word)) (setq needle1 (if (equal needle1 "") default-word needle1)) (setq default-dir default-directory) (setq needle2 (or (read-string (concat "target directory " default-dir " ")) default-dir)) (setq needle2 (if (equal needle2 "") default-dir needle2)) (grep-find (concat "ack --nocolor --nogroup " needle1 " " needle2))) これでOK。実行すると ファイル名(デフォルトはカーソル上の単語) 検索パス(デフォルトはコマンドを実行したバッファのカレントディレクトリ) を順番に聞いてきます。 便利、便利。ちなみに参考にしたのは米Slashdotのこちらです。 関数一覧表示 [M-x speedbar] これ、予想以上でした。VisualStudioやEclipseのようなソースツリービューを表示してくれる。[f11]などの最高位のキーに設定してしまう価値は十分にあります。 と思ったら、Emacs Code BrowserなどというすごそうなElispも発見。Carbon Emacsには含まれていないので調査が必要かな・・・なんて思ったけれど、スクリーンショットを見る限りちょっとやり過ぎな感がしたので触らないことにした。 2009/04/15追記:[Googleから「nav」というのが出ていた http //google-opensource.blogspot.com/2009/03/nav-ide-like-navigation-pane-for-emacs.html]。プロジェクトホームにあるスクリーンショット(下に転載)を見てみると、speedbarと異なり同じウィンドウ内でファイルを表示してくれるのが何だかヨサゲ。早速インストールしてみた。起動は「M-x nav」。 imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 うーん・・・ダメだこれ。ファイルを表示してくれるだけで関数一覧は表示してくれない。1キーで色々できるのは良いんだけど、ちょっとボクの目的からは外れているのでパス。 キー入力の記録&再生 記録開始:[F3]or[C-x (] / 記録終了:[F4]or[C-x )] / 再生:[F4]or[C-x e] [F3]や[F4]はEmacs 22より古いバージョンでは使用できないとのこと。 Emacsではマクロと呼ぶ。直前のマクロを編集する場合は[C-x C-k e]と入力してからリターン([C-x e]も可)。編集後は[C-c C-c]で確定。マクロを保存して再利用するのは若干面倒で、 マクロに名前を付ける[C-x C-k n]でマクロ名を付加(セッションを閉じるまでは[M-x マクロ名]で実行可能) 名前を付けたマクロをファイルに展開、保存する.emacsか適当なファイルにて[M-x insert-kbd-macro Enter マクロ名 Enter]と入力し、マクロをelispで展開 ファイルを保存。.emacs以外のファイルに保存した場合は、.emacsにて「(load-file "パス付きのファイル名")」を記述しておく [M-x マクロ名]で実行 という手順を踏む。キー割当も行いたい場合は、同じく.emacs上で「(global-set-key "¥C-x¥C-kT" マクロ名)」と記述しておく(Tの場合)。 ちなみにマクロに割り当てられるキーは、[C-x C-k 0〜9またはA〜Z]のみなので要注意。 検索履歴による再検索 検索やファイルオープンのときに[M-p]を押すだけ イヤなブログ著者のサイトにある、minibuf-isearch.elやsession.elが使えるかどうか調査したりもしたのですが、そんなことをしなくても大丈夫でした。 最後に編集した箇所に移動 とりあえず簡単な方法は、[C-¥]→[C-g]→[C-¥]でUndoしてからRedoで戻せば何とかなるけれど、一度操作を取り消すのがちょっとリスキー。 そこで色々と検索したらgoto-chg.elというEmacsLispを発見。ファイルを開いてから変更した箇所へ移動できる(しかも辿っていける)とのこと。 ただ、同サイトでのキーアサインはGNU Globalとバッティングしてしまうので、普段の自分のアサイン[F5](逆方向へ辿る時はShift+[F5])を試してみました。 ;; [F5]で最後に編集した箇所へ辿る ;; Shift-[F5]で編集箇所を逆方向に辿る ;; http //www.emacswiki.org/cgi-bin/wiki/goto-chg.el (require goto-chg) (global-set-key [f5] goto-last-change) (global-set-key [S-f5] goto-last-change-reverse) そしたら、おぉ、まさに秀丸のと同じかそれ以上の機能が!素晴らしい! 検索方向の切り替え 順方向:[C-s]、逆方向:[C-r] ※かみむらさんにM-sではなくC-rだと指摘してもらいました。THX! 単語検索:[C-s Enter C-w] ※ただし、次の候補を探しにいってくれない! ただ、この検索方法だと大文字小文字の区別無く、単語かどうかの判定もできません。秀丸だと検索用ダイアログボックスのチェックボックスで、 大文字/小文字を区別する 単語として検索 正規表現の適用 を切り替えられる(検索している途中でも)ので、これだけだとちょっと不便。調査中。 と、ここで問題発生。単語として検索したとき、いったん検索すると次候補に[C-s C-s]してしまうと普通の検索モードになってしまう。この回避方法はないみたいで、さてどうしたものか。 −−2chで聞いたところ、「ないよ」とか「そんなあなたにmoccur」「Redoは?」と答をくれた。Redo, Redo+はダメだったけど、moccurは調べれば何とかなりそう?moccur関連全部入りのcolor-moccurはこちら。 2008/8/6:単語検索を連続する方法に気が付いた。なんだ、正規表現で単語を表せばいいんだ。 単語検索:[C-M-s] \ hogehoge\ 検索を続けるとき:[C-s], [C-r] 気付けば簡単でした。 ちなみにインクリメンタルサーチ中にバックスペースキーを入力するとメイン画面の文字が削除されてしまうのは、以下の設定を.emacs.elに記述しておけば良いことが判明。 ;; backspaceキーをインクリメンタルサーチ中のミニバッファで有効にする (define-key isearch-mode-map [backspace] isearch-delete-char) 参考にしたのはこちらのサイト。ありがとうございました。 キー入力によるファイルの切り替え [C-x C-→]または[C-x C-←] (矢印は矢印キーを表す) [C-x b]や[C-x C-b]もいいけれど、一番手軽。ちなみにウィンドウやフレーム間の移動は、 [C-x 2]などで作成したウィンドウ間の移動:[C-x o] [C-x 5 2]などで作成したフレーム間の移動:[C-x 5 o] と入力する。・・・けれど、フレーム間の移動はちょっと面倒くさい。そこで調べてみたところ(other-frame x)でxに渡す値でアクティブなフレームを切り替えてくれることが判明。逆戻りは負数を与える。 というわけで、[C-x C-↑][C-x C-↓]に登録してみた。 ;; C-x C-left/right でバッファの切り替え ;; C-x C-up/down でフレームの切り替え (global-set-key [?\C-x C-up] (lambda () "" (interactive) (other-frame -1))) (global-set-key [?\C-x C-down] (lambda () "" (interactive) (other-frame 1))) あ、これ便利だ。 文字コード表示&保存 どうやるの? マクロ外コードのグレイアウト どうやるの? ファイルを開いた時に、以前編集していた場所に移動 以下を.emacs.elに記述するだけです。saveplace.elはCarbonEmacsに最初から含まれています。 (load "saveplace") (setq-default save-place t) これによって「最後にカーソルのあった場所(*3)」に移動してくれます。 日付の入力 どうやるのだろう?EmacsLispで簡単にできそうな気もするけれど。 → 2008/10/29現在、ATOKをインストールしてしまったので「きょう」や「いま」を変換すれば日付や時刻が入力できるようになってしまいました。 一括コメントアウト 事前に範囲を指定しておいて[M-;](セミコロン)※かみむらさんTHX! ※範囲指定していない場合はカーソルのある行の末尾にコメントが追加され、そこにカーソルが移動してくれる このM-;は結構インテリジェントで、範囲選択していない状態では行末にコメントを追加し、その真ん中にカーソルを持ってってくれる。便利! 気になる点 タブ文字の入力 [M-i]でハードタブ(空白記号ではない、¥t)が入力される。 ただしバックスペースで削除する時はタブ文字から空白になって消されていくし、また自動インデントの種類によってはタブではなく2文字の空白で表されてしまうので、本格的にタブだけで使用するには結構なカスタマイズが必要っぽい。 2008/9/9追記: 空白になって消されていくのは、Backspaceキーにbackward-delete-char-untabifyというように「非タブ化しつつバックスペース」というコマンドがバインドされていたことが原因だった。なので (global-set-key [backspace] backward-delete-char) と.emacs.elに記述して問題解決。 行番号の表示 他所様の作ったものを使うしかない模様。Webを漁ってみると、どうも有名どころとして3つあるみたい。 wb-line-number.el setnu.el( setnu+.el) linum.el まずwb-line-number.elは、ダウンロードしたwb-line-number.elをrequireして、適宜ONにすればOK。 (require wb-line-number) ;;← これを.emacs.elに追加 (wb-line-number-toggle) ;; ← こちらは適宜呼んであげる でも、Carbon Emacs上で試したら下図のように行を正しく認識してくれなかった。なぜだろう?? そこでsetnu.elを調べてみると、これは・古い、・バグが多い、・修正版として用意されたsetnu+.elがリンク切れ、というように全然使えなかったのでパス。 結局、最後のlinumが一番シンプルで良かったのでこれを使うことにした。使い方はsetnu.elとほぼ同じ。 .emacs.elに (require linum.el) と記述しておき、表示するときは M-x linum-mode とするだけ。 ちなみにemacs.elによく書かれている(line-number-mode t)はモードラインに現在行を表示させるだけで、linum-modeのように画面の左側に行番号情報を表示してくれるわけじゃない。(column-number-mode t)も同じで、モードラインに桁数を表示するだけで違うから注意。 あったらいいな diff+Mergeを、日本語表示に対応させた上で実現 どうやるの?ediffはいいけれど、ファイルの文字コードを自動判別してくれるわけではないみたい(Windowsと開発環境が混在しているとShift-JISも混じってきて面倒)。さて、どうしたものか。 入力しようとしている名前を補完 どうやるの?ac-modeが使えそうだけれど、今後消えゆく運命にありそうなEmacsLispなので、代替物を探さねば。 選択領域をハイライトまたは反転させる .emacs.elに以下の式を記述しておく (transient-mark-mode 1) Emacsのデフォルト設定だと、領域を選択している最中の選択箇所はハイライトされず、「今どこを選んでいるの?」というのが往々にして分からなくなりがち。この場合は上記のとおりに記述しておけばOK。領域を選択している際の色を変えられます。次の「Shift+矢印キー」と組み合わせて設定しておくと便利かな。 Shift+矢印キーで領域選択する .emacs.elに以下の式を記述しておく (setq pc-select-selection-keys-only t) (pc-selection-mode 1) これで大丈夫です。Mac OSXのCarbon EmacsはこれがデフォルトでONになっているみたいだけど、Meadow3.00ではOFFだったので記録しておこう。 矩形領域の選択 .emacs.elに以下を追加しておき、 (autoload sense-region-on "sense-region" "System to toggle region and rectangle." t nil) (sense-region-on) 範囲選択している状態で C-SPC を入力。 整形テキスト、テキストで書かれた表を取り扱うときに矩形選択機能があると便利です。秀丸ではこの機能があって、ボクはC-bに割り当てて多用していました。で、Emacsにも当然同じ機能があるわけですが・・・ 入力が面倒くさい(デフォルトのキーバインド(C-x r k, C-x r y)が有り得ない。替えればいいけどさ) 矩形選択中なのに画面は通常選択のままでイメージが掴みづらい というのが気になります。特に後者、常用するにはちと厳しい。 そこで見つけたのが冒頭に紹介した[session.el http //taiyaki.org/elisp/sense-region/]。これは便利で、範囲選択中にC-SPCすると通常選択と矩形選択を切り替えてくれます。しかも矩形選択中は矩形の選択領域が表示されますし、切り取りや貼り付けもC-w, C-yで出来ます(*4)。 before after!! さらにこのEmacsLispには追加機能があって、領域を選択していないときにCtrl+[space] を繰り返すと単語がリージョンに追加されていってくれます。便利だ。 上記で紹介したサイトからのソースリンクが切れてしまっているので、載せておきます。http //taiyaki.org/elisp/sense-region/src/sense-region.el です。ページのリンク先には「www」が付いてしまっているようです。 その他 上の機能を探している途中で見つけた、「これも覚えておいた方がよいな」というコマンドや設定を書いておきます。 マウスのホイールスクロールを加速させたくない Emacsのマウスホイールの動き、なんだか他のアプリとは少し違うんですよね。少しでも回しすぎると一気に最後まで飛んで行ってしまうような。 どうもマウスを連続して回していると、wheel-up/downからdouble/triple-wheel-up/downというイベントに変わってしまっているみたいです。そこで振る舞いをカスタマイズしつつ、なじみやすい設定に落とし込んでみました。 ;; マウスのホイールスクロールスピードを調節 ;; (連続して回しているととんでもない早さになってしまう。特にLogicoolのマウス) (global-set-key [wheel-up] (lambda () "" (interactive) (scroll-down 1))) (global-set-key [wheel-down] (lambda () "" (interactive) (scroll-up 1))) (global-set-key [double-wheel-up] (lambda () "" (interactive) (scroll-down 1))) (global-set-key [double-wheel-down] (lambda () "" (interactive) (scroll-up 1))) (global-set-key [triple-wheel-up] (lambda () "" (interactive) (scroll-down 2))) (global-set-key [triple-wheel-down] (lambda () "" (interactive) (scroll-up 2))) うわ、コレすごい快適。 使っているマウスがLogicoolのマウスで、例のMicroGear™スクロールホイールを使っていると速攻でdouble/tripleに移行してしまうので、すばらしい! ちなみに参考にさせてもらったサイトはこちらです。感謝です。 「最近使ったファイル」をメニューに表示させる .emacs.elに以下の式を記述しておく (require recentf) (recentf-mode 1) このメニューの設定は色々と変えられます。 文字列の自動補完 (M-x ac-mode) 上記はかなり賢い補完機能を持ってた。候補1つ1つがUndoの対象になってしまうところ以外は非の打ち所がないです。Emacsを使う上では必須機能に近い、と見ました。 公式サイトはこちら。 ※注意(2008/10/25):CarbonEmacsの2008年秋版ではac-modeが無くなるみたいです。 Subversionクライアント psvn、ではなくてdsvnが便利。というのもこのサイトに書いてあるとおり、作業中に?キーでキーバインド一覧を表示できるから。 ;; Subversion用の設定 (psvn.elとdsvn.elを併用) ;; (require psvn) (autoload svn-status "dsvn" "Run `svn status ." t) (autoload svn-update "dsvn" "Run `svn update ." t) 熟練者にはpsvnでも良いんだろうけれど、ボクみたいな初心者にはdsvnがいいのです。 対応する括弧に移動 C-M-f/b または C-M-n/p 前者はS式、後者は括弧。どちらも便利だけれど、Cでは後者かな。ただ、C-M-というのは押しづらいので ;; 対応する括弧に移動(C-M-f/p相当) (global-set-key [?\C-{] backward-list) (global-set-key [?\C-}] forward-list) というようにC-{/}にアサインしておきました(本当はC-[/]にアサインしたかったけれど、C-[がESCキーと認識されてしまって対応できず。どうすれば良いんだろう?)。 補足 外部からダウンロードした.elファイルをCarbonEmacsにインストールする方法() CarbonEmacsアプリ下に保存(一番手っ取り早いが将来性がない) 手順は以下のとおりです。 .elファイルをダウンロード .elファイルを「/Applications/Emacs.app/Contents/Resources/site-lisp/」にコピー これだけ。ちなみにバイトコンパイルする場合は、同名のファイルを開いて、 M-x byte-compile-file で.elcファイルを作成しておけばオーケーです。 この方法は特別な設定が不要なところが利点ですが、CarbonEmacsのバージョンを更新したりすると全てご破算になってしまうのであまりオススメしません。 .emacs.elでパスを指定し、そこに保存する(オススメ) 手順は以下のとおり。 .elファイルをダウンロード .emacs.elのできるだけ最初の方でadd-to-listを記述 そこで指定したディレクトリに.elファイルをコピー たとえば私の場合はホームディレクトリ下に.emacs.d/site-lispを作り、そこに保存しています。 (add-to-list load-path "~/.emacs.d/site-lisp") (let ((default-directory (expand-file-name "~/.emacs.d/site-lisp"))) (normal-top-level-add-subdirs-to-load-path) ) これだとCarbonEmacsを書き換えてもelファイルが残るのでオススメです。不可視ファイルに保存するのがイヤな人はディレクトリ名を適当に変更してください。 参考にした情報 Special Thanks かみむらさん。コメント欄で色々と教えていただきました。ありがとうございます。 書籍 入門 GNU Emacsこのページ作成で最も使用した本。これがなければページを作ろうとすら思いませんでした。 GNU Emacsデスクトップリファレンスあまり役立たなかったけれど、上の本よりは手元に置いておきやすいのでボチボチ使いました。 インターネット 国内 秀まるおのホームページ秀丸のホームページ Wikipedia(ja)の記事どちらかといえばEmacsの歴史を知りたい人向け。 プリプロセッサで無効化されたコードをグレイアウトするにはどうしたらいいですか?表題の質問をはてなに出した人がいました。 Rubyのメソッドの補完を行うanything-rcodetools.elをリリース今回対象にしているetagsとは別(多分)のRubyメソッド補完elisp。今度試してみます。 海外 Slashdotの記事「(Stupid) Useful Emacs Tricks?」米SlashdotでEmacsのトリックで何かある?というトピックに集まったたくさんの記事。これは面白いです。 Emacs Nifty TricksEmacs小技の総本山的サイト。どんだけあるの? コメント もしあれば、どうぞ。 通常のコメントは、M-; (私の環境では) -- かみむら (2008-08-01 21 14 22) 一括コメントは、リージョンした状態で M-; -- かみむら (2008-08-01 21 14 49) grep は、M-x grep -- かみむら (2008-08-01 21 15 46) むしろ、M-x find-grep で、再帰的に grep してくれるのが便利です。 -- かみむら (2008-08-01 21 16 32) あと、etags があるならば、関数名にカーソルを配置して、M-. で、その関数定義の場所にジャンプしてくれます。 -- かみむら (2008-08-01 21 18 06) 保存する文字コードの指定は、M-x ret f です。 -- かみむら (2008-08-01 21 19 37) 最後に編集した場所への移動は、私は、Undo してます。あと、C-x 2 で画面を2つにして、片方で切り取って、片方で貼り付けとかも便利です。 -- かみむら (2008-08-01 21 20 50) ハードタブは、C-q TAB でしょうか。C-q C-i も可能かと。 -- かみむら (2008-08-01 21 23 30) 戻る方向への検索は、C-r も使えるかもしれません。 -- かみむら (2008-08-01 21 24 25) 私は、Emacs を応援してます! -- かみむら (2008-08-01 21 25 21) かみむらさん、色々とありがとうございます!色々知らなかったことがたくさんあり、どれも参考になります。Undoで最後の場所に戻る、というのは発想の転換ですね。すばらしい!このページ、更新が途中で止まっているのでまた再開しますね。かみむらさんのおかげでやる気が出ました。 -- かときち (2008-08-02 13 51 08) 初めまして。記事の方参考にさせて頂きました。ac-mode の振り替えは標準添付の hippie-expand でいかがでしょうか? -- すが (2008-11-22 02 31 16) すがさん、ありがとうございます!hippie-expandがどういうものか知らなかったので、ac-modeと比べてどうか、調べてみますね。感謝です。 -- かときち (2008-11-25 21 59 18) だけど、除外ファイルも一度検索リストに入れられてしまうので遅いという、けっこう重大な欠点があったので次第に使わなくなってしまいました。 これは改善されたみたい? -- y (2009-03-30 23 21 14) 遅い、というのはhippie-expandのことですよね。ac-modeもあまり使わないことに気付いて、今は使用を止めています・・・。コメントありがとうございます。あ、そういえば最近speedbarのようなバッファを同じウィンドウの中で表示する、というEmacs-Lispが公開されていたのを思い出しました。試してみようっと。 -- かときち (2009-03-31 02 00 50) [マクロ外コードのグレイアウト] cpp-highlight-buffer が良いみたいです。ただ、起動時にこれを実行させる場合はcondition-caseで例外処理しないとダメみたいです。 -- まつもと (2009-11-14 22 38 49) [gtags] gtags-find-tag よりgtags-find-tag-from-hereの方が、一気にジャンプ出来るんで良さげかもしれません。 -- まつもと (2009-11-14 22 42 01) まつもとさん、ありがとうございます。ちょっと使ってみて、試してみます。 -- かときち (2009-11-16 14 04 08) http //www.bookshelf.jp/soft/meadow.html の情報は非常に有用です。特にmoccur-edit.elは強力すぎて眩暈がします。 -- こうじ (2010-01-12 13 03 35) あと、行番号が要るというのはただの「思い込み」で、まともな行番号表示elispがないのは、必要ないことが判って作者が作るのを止めてしまうからだと思われます。 -- こうじ (2010-01-12 13 08 13) こうじさん、コメントとリンク、ありがとうございます。行番号は…難しいですね。diffやチームでのコードレビューなどでは行番号が識別子になっていますしね。 -- かときち (2010-02-05 11 40 53) 「入力しようとしている名前を補完」は dabbrev を使っています。途中まで入力して M-/ で補完。違うのが補完されたら再度 M-/ です。 -- こうぞう (2011-01-25 21 32 33) 「最後に編集した箇所に移動」と似た動きに、C-x C-x と C-u C-SPC がある。前者は今の位置とマークした位置を交換する。後者はマーク履歴を順に巡る。 -- こうぞう (2011-01-25 21 42 09) Wine1.2.2で hm802_signed.exe試用中ですが範囲選択の文字消えてません。僕の環境だけかも知れませんが。 -- yoshikazu (2011-02-19 22 52 58) その後の試用で矩形選択と横スクロールで文字消えました。 秀丸ビミョーに不便です。 -- yoshikazu (2011-02-20 12 26 19) http //itmst.blog71.fc2.com/blog-entry-44.htmlのコメントに答えがありました。 これで矩形選択や横スクロールでも文字消えません。 -- yoshikazu (2011-02-21 23 02 20) 検索で 大文字小文字を区別するには case-search-fold をnil/tに設定でどうでしょうか? -- 名無しさん (2014-07-23 09 54 00) 名前 コメント
https://w.atwiki.jp/ntemacs/pages/36.html
■ Linux の Emacs で利用できる設定 【お知らせ】 2019/05/07 追記 現在は Cygwin の代わりに WSL を使うことで同様な環境を構築できます。そもそも WSL があれば、リモートマシンで Emacs を起動する必要は無いのかもしれません。 2017/05/01 追記 dired のソート順を制御する ls-lisp-UCA-like-collation の設定を追加しました。 2016/09/29 追記 os-open-command 関数をファイルとディレクトリのみ(URLは対象外)に機能する関数として見直しました。この見直しにより、os-open-command 関数に指定したファイルとディレクトリを開くコマンドを起動するホストの決定は、第一引数に指定した内容からのみで(default-directory を使わずに)判断するようにしました。(「VirtualBox 上の Ubuntu から WSL を経由して Windows 環境にアクセスするための設定」を利用するための見直しです。) (os-open-command "/home/foo.pdf") ← ローカルホストで実行 (os-open-command "/user@hostname /home/foo.pdf") ← hostname に指定したホストで実行 【本題】 Windows 上の仮想マシン環境(VirtualBox等)で Linux(Ubuntu等) を利用している場合に、その環境で立ち上げる Emacs を使ってローカルマシンの Windowsアプリケーションを起動させるための設定です。Putty などで接続した、リモートマシン上の Linux を使うこともできます。 オプションとして、ローカル環境で Xサーバが動作している場合(VirtualBox で Linux を立ち上げた場合など)で、Tramp で接続する先がさらに Linux の場合、ssh 経由の X11 forwarding が動作するように設定しています。 (リモートのマシンで Xクライアント を起動すると、ssh のトンネルを利用してローカルマシンに表示されます。) <Windowsアプリケーションを起動する場合の使い方> 1) 利用している Windows マシンから、VirtualBox や Putty などで Linux環境を使えるようにする。 2) そこで Emacs を立ち上げ、ローカルマシンの Windows で動いている Cygwin に tramp で dired 接続する。 C-x d /username@WindowsIPアドレス (リターン) 3) Windows で開きたいディレクトリやファイルにカーソルを合わせ、Wキー を入力する。⇒ Windows アプリケーションで開く! 4) dired で開いているフォルダを Explorer で開きたければ、Eキー を入力する。⇒ Explorer で開く! 5) 以下の設定の os-open-file-suffixes変数 に設定してある suffix が付いたファイルであれば、fキー で起動できる。 Wキー や fキー でファイルをオープンした場合は、recentf に登録(recentf-push)するようにしているので、以降 recentf の履歴から直接起動できる。 (helm で recentf の情報源を表示するようにしている場合は、便利) 以下の内容は、Windows 7 を利用している PC での設定手順となります。 0) ローカルマシンに Cygwin がインストールされていなければ、インストールする。 1) Cygwin に sshd がインストールされていなければ(/usr/sbin/sshd があればインストール済み)、インストールする。 2) Cygwin のターミナルを管理者権限で起動する。(右クリックで「管理者として実行」を選択) 3) 既にサービスとして sshd 立ち上げている場合(ps -ef | grep sshd で確認できる)は、次のコマンドを実行する。 (サービスとして立ち上げているかわからないときは、とりあえず次を実行すればOK) # cygrunsrv -R sshd 4) 既に sshd の設定がされている場合(/etc/ssh* があれば設定済み)は、次のコマンドを実行する。 (消すファイルは、/bin/ssh* でないことに注意!!) # rm /etc/ssh* /var/log/sshd.log # rmdir /var/empty 5) 引き続き、次のコマンドを実行する。 # ssh-host-config *** Info Generating /etc/ssh_host_key *** Info Generating /etc/ssh_host_rsa_key *** Info Generating /etc/ssh_host_dsa_key *** Info Generating /etc/ssh_host_ecdsa_key *** Info Creating default /etc/ssh_config file *** Info Creating default /etc/sshd_config file *** Info Privilege separation is set to yes by default since OpenSSH 3.3. *** Info However, this requires a non-privileged account called sshd . *** Info For more info on privilege separation read /usr/share/doc/openssh/README.privsep. *** Query Should privilege separation be used? (yes/no) yes *** Info Updating /etc/sshd_config file *** Query Overwrite existing /etc/inetd.d/sshd-inetd file? (yes/no) yes *** Info Creating default /etc/inetd.d/sshd-inetd file *** Info Updated /etc/inetd.d/sshd-inetd *** Query Do you want to install sshd as a service? *** Query (Say "no" if it is already installed as a service) (yes/no) no ← ここまでとする! *** Info Host configuration finished. Have fun! 6) Cygwin のターミナルを終了する。 7) Cygwin のターミナルを普通に(管理者権限でなく)起動する。 8) /usr/sbin/sshd と入力し、sshd を起動する。 ※ sshd は Windows を再起動する都度、起動する必要がある。 ssh-host-config の設定で ssh をサービスとして登録して立ち上げる方法もあるが、このようにして立ち上げた ssh では cygstart がうまく動かない。 cyglsa-config の設定をし、sshd のサービスの設定でログインアカウントをLSAに変更して「デスクトップとの対話をサービスに許可」のチェックを 入れてみたが、cygstart でディレクトリは開くがアプリケーションは起動しないという状況だった。今のところ、対応策を見つけられていない。 9) ssh localhost でローカルマシンにログインする。 ※ 接続できない場合は、Windowsファイアウォールの設定で TCP 22番のポートを開く必要があるかもしれない。 また、ssh の関連ファイルを削除し、ssh の再設定(ssh-host-config)を行った場合は、次のようなメッセージが出るかもしれない。 その場合は、~/.ssh/known_hosts ファイルを削除する。(他のマシンから Cygwin へアクセスする際に発生したら、同様に対処する) @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdropping on you right now (man-in-the-middle attack)! It is also possible that a host key has just been changed. The fingerprint for the ECDSA key sent by the remote host is xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx. Please contact your system administrator. Add correct host key in /home/.ssh/known_hosts to get rid of this message. Offending ECDSA key in /home/.ssh/known_hosts 1 ECDSA host key for xxx.xxx.xxx.xxx has changed and you have requested strict checking. Host key verification failed. 10) cygstart . (← ピリオド(カレントディレクトリ)です。/(ルート)などでもいいです)で Explorer が起動することを確認する。 また、Windows アプリケーションとの結びつきをもつ suffix をもったファイルが cygstart で起動できるか確認する。(例:cygstart hoge.xlsx) 11) ここまで来たら、次のことが可能となる。 リモートマシンで Emacs を起動する。(仮想マシン上の Linux でも良い) dired で /ユーザ名@ローカルマシンのIPアドレス を指定し、ローカルマシンのディレクトリをオープンする。 ディレクトリや Windows のアプリケーションで開ける suffix を持ったファイルにカーソルを合わせ、X(dired-do-shell-command)を入力し、プロンプトに cygstart と入力し、リターン押下。 ローカルマシンの Windows のアプリケーションで 指定したファイルが開く!筈 12) ここまでもうまく動いたら、以下の設定を追加してみる。 次のページで紹介している設定の一部を Emacs の設定に追加し、有効にする。 dired を OS と連携して使うための設定 tramp を tramp-method “scp” で使うための設定 (require cl-lib) (require dired) (require ls-lisp) (require recentf) (require tramp) (require tramp-sh) ;; ls-lisp を使う (setq ls-lisp-use-insert-directory-program nil) ;; dired の並び順を Explorer と同じにする (setq ls-lisp-ignore-case t) ; ファイル名の大文字小文字無視でソート (setq ls-lisp-dirs-first t) ; ディレクトリとファイルを分けて表示 (setq dired-listing-switches "-alG") ; グループ表示なし (setq ls-lisp-UCA-like-collation nil) ; for 25.1 or later ;; OSタイプ を調べる (defun os-type () (let ((os-type (shell-command-to-string "uname"))) (cond ((string-match "CYGWIN" os-type) cygwin) ((string-match "Linux" os-type) linux) ((string-match "Darwin" os-type) darwin)))) ;; OS でファイル、ディレクトリを直接開くためのコマンドを決定する (defun os-open-command-name (os-type) (let ((command-name-list (cl-case os-type ( cygwin ("sglstart" "cygstart")) ( linux ("sglstart" "wslstart" "xdg-open" "gnome-open")) ( darwin ("open"))))) (catch loop (dolist (command-name command-name-list) (let* ((command1 (concat "which " command-name " 2 /dev/null")) (command2 (if (file-remote-p default-directory) ;; リモートではログインシェルでコマンドを実行する (format "$0 -l -c %s 2 /dev/null" command1) command1)) (absolute-path-command-name (replace-regexp-in-string "\n" "" (shell-command-to-string command2)))) (unless (string= absolute-path-command-name "") (throw loop absolute-path-command-name))))))) ;; os-open-command のキャッシュ (defvar os-open-command-cache nil) ;; キャッシュを検索・登録する (defun os-open-command-cache () (let* ((hostname (if (file-remote-p default-directory) (let* ((vec (tramp-dissect-file-name default-directory)) (host (tramp-file-name-host vec)) (user (tramp-file-name-user vec))) (if user (format "%s@%s" user host) host)) " localhost "))) (cdr (or (assoc hostname os-open-command-cache) (let* ((os-type (os-type)) (os-open-command-name (os-open-command-name os-type))) (car (push (cons hostname (list os-type os-open-command-name)) os-open-command-cache))))))) ;; OS で直接、ファイル、ディレクトリを開く (defun os-open-command (filename) (interactive) (let ((default-directory (cond ((file-regular-p filename) (file-name-directory filename)) ((file-directory-p filename) filename)))) (if default-directory (let* ((cache (os-open-command-cache)) (os-type (nth 0 cache)) (os-open-command-name (nth 1 cache))) (if os-open-command-name (let ((localname (if (file-remote-p filename) (tramp-file-name-localname (tramp-dissect-file-name filename)) filename))) (message "%s %s" (file-name-nondirectory os-open-command-name) localname) (cond ((and (eq os-type linux) (not (file-remote-p default-directory))) ;; 次の URL の対策を行う ;; http //d.hatena.ne.jp/mooz/20100915/p1 ;; http //i-yt.info/?date=20090829#p01 (let (process-connection-type) (start-process "os-open-command" nil os-open-command-name localname))) (t ;; リモートでもコマンドを実行できるように、start-process ではなく shell-command系を使う (shell-command-to-string (concat os-open-command-name " " (shell-quote-argument localname) " "))))) (message "利用できるコマンドがありません。"))) (message "オープンできるファイルではありません。")))) ;; dired で W 押下時に、カーソル位置のファイルを OS で直接起動する (define-key dired-mode-map (kbd "W") (lambda () (interactive) (let ((filename (dired-get-filename nil t))) (recentf-push filename) ; recentf に追加する (os-open-command filename)))) ;; dired で E 押下時に、開いているディレクトリを OS で直接開く (define-key dired-mode-map (kbd "E") (lambda () (interactive) (os-open-command (dired-current-directory)))) ;; マウスの右ボタン押下時に、開いているディレクトリを OS で直接開く (define-key dired-mode-map [mouse-3] (lambda (event) (interactive "e") (mouse-select-window event) (os-open-command (dired-current-directory)))) ;; OS で起動したいファイルの拡張子一覧 (setq os-open-file-suffixes ("doc" "docx" "xls" "xlsx" "ppt" "pptx" "mdb" "mdbx" "vsd" "vdx" "vsdx" "mpp" "pdf" "bmp" "jpg" "odt" "ott" "odg" "otg" "odp" "otp" "ods" "ots" "odf" )) ;; OS で直接開きたいファイルかどうかを判定する (defun os-open-file-p (filename) (when (file-regular-p filename) (let ((ext (file-name-extension filename))) (when (and ext (member (downcase ext) os-open-file-suffixes)) t)))) ;; dired でファイルを f で開く際に、os-open-file-suffixes リストに指定してあるサフィックスのファイルは OS で直接起動する (advice-add find-file around (lambda (orig-fun rest args) (let* ((file-name (nth 0 args)) (symlink-name (file-symlink-p file-name)) (target-name (if symlink-name symlink-name file-name))) (cond ((os-open-file-p target-name) (let ((filename (expand-file-name file-name))) (recentf-push filename) ; recentf に追加する (os-open-command filename))) (t (apply orig-fun args)))))) ;; tramp の method を設定する (setq tramp-default-method "scp") ;; リモートサーバで shell を開いた時に日本語が文字化けしないよう、LC_ALL と LC_CTYPE の設定を無効にする ;; http //www.gnu.org/software/emacs/manual/html_node/tramp/Remote-processes.html#Running%20a%20debugger%20on%20a%20remote%20host (let ((process-environment tramp-remote-process-environment)) (setenv "LC_ALL" nil) (setenv "LC_CTYPE" nil) (setq tramp-remote-process-environment process-environment)) 次のページで紹介している設定も行う。 tramp による接続先で Xクライアント を実行するための設定 この設定で、Cygwin に接続している dired のバッファで、Wキー や Eキー や fキー を押下することで、Windows アプリケーションが開くようになるはず。 ここまで来ると、helm の recentf に登録されている Cygwin 上のファイル(fキーで起動したものが、recentf に登録される)を選択するだけで起動するようになる。 13) 最後に、必要であれば Emacs を立ち上げるマシンの公開鍵を 接続する Cygwinマシン(ローカルマシン)に登録する。設定方法は次のとおり。 $ ssh-copy-id -i ~/.ssh/id_rsa.pub ユーザID @ ローカルマシンのIPアドレス 変更履歴 2013/11/09 このページを作成した。 2013/11/11 ls-lisp を使うように変更した。 2013/11/15 OSソフトの起動方法の見直しを反映した。 2013/11/17 Linux マシン に接続した際に、ssh 経由で X11 fowarding が有効になるようにした。 2013/11/18 os-open-command-name function の内容を見直した。 2013/11/18 os-open-command function の内部の判定が誤っていたので訂正した。 2014/05/10 tramp による scp 実行時に圧縮オプションが付くようにした。 2014/12/08 Emacs-24.4 では scpc method は提供されていないようなので、tramp-method を scp にした。 2015/06/19 linux で os-open-command を起動する際の判定方法を見直した。 2015/09/13 advice を Emacs-24.4 以降の書式に見直した。 2016/09/29 os-open-command 関数をファイルとディレクトリのみ(URLは対象外)に機能する関数として見直した。 2016/10/05 os-open-command 関数が一度検索した接続先毎の利用コマンドをキャッシュして再利用するように改善した。 2016/10/06 コマンドのキャッシュのキーを ホスト名 から ユーザ名 @ ホスト名 に変更した。 2016/11/19 ローカル接続(tramp 接続でない)の場合の os-open-command-cache のキーを "localhost" から " localhost " に変更した。 2017/04/09 find-file のアドバイスを一部見直した。(os-open-command コマンドの引数が絶対パスとなるように調整した。) 2017/04/20 find-file のアドバイスを一部見直した。(リンク先のファイルの種別を判定できるように対策した。) 2017/05/01 dired のソート順を制御する ls-lisp-UCA-like-collation の設定を追加した。
https://w.atwiki.jp/seg_fault/pages/6.html
ソースコードを理解していくうえで、emacsとglobalの設定をしてみた。 emacs emacsは言わずとしれた、editorです;; global タグジャンプするツールです。 GUN GLOBAL 多摩通信社 インストール emacsはインストールされていたので、globalをインストール #apt get update #apt get install global で、gtags.elのバイトコンパイルでエラーがでたみたいなので、 /usr/share/emacs/site-lisp/global/gtagsをちょこちょこ修正 とりあえず、オリジナルとのdiff gtags.el.org 2002-07-04 22 39 21.000000000 +0900 gtags.el 2006-12-13 20 11 08.789594232 +0900 @@ -330,7 +330,7 @@ (let (tagname flag) (if (= 0 (count-lines (point-min) (point-max))) (progn (setq tagname "main") (setq flag "")) (if gtags-running-xemacs (goto-char (event-point event)) (if gtags-running-xemacs (goto-char (event-start event)) (select-window (posn-window (event-end event))) (set-buffer (window-buffer (posn-window (event-end event)))) (goto-char (posn-point (event-end event)))) @@ -352,7 +352,7 @@ (defun gtags-select-tag-by-event (event) "Select a tag in [GTAGS SELECT MODE] and move there." (interactive "e") (if gtags-running-xemacs (goto-char (event-point event)) (if gtags-running-xemacs (goto-char (event-start event)) (select-window (posn-window (event-end event))) (set-buffer (window-buffer (posn-window (event-end event)))) (goto-char (posn-point (event-end event)))) @@ -414,7 +414,7 @@ (setq buffer (generate-new-buffer (generate-new-buffer-name (concat "*GTAGS SELECT* " prefix tagname)))) (set-buffer buffer) (message "Searching %s ..." tagname) (if (not (= 0 (call-process "global" nil t nil (concat "-ax" flag) tagname))) (if (not (= 0 (call-process "global" nil t nil (concat "-x" flag) tagname))) (progn (message (buffer-substring (point-min)(1- (point-max)))) (gtags-pop-context)) (goto-char (point-min)) event-pointが定義されていなかったみたいなので、適当event-startに変えただけ・・・ 後は、 emacs -batch -f batch-byte-compile gtags.el でコンパイルして、 mv gtags.elc /usr/share/emacs21/site-lisp/global/ で完了 個人の設定 ホームディレクトに .emacsを作成 ;; tab width (setq-default tab-width 4) ;; for emacs color (require font-lock) (global-font-lock-mode t) ;; check {}() (show-paren-mode t) ;; for global (autoload gtags-mode "gtags" "" t) (setq gtags-mode-hook (lambda () (define-key gtags-mode-map "\et" gtags-find-tag) (define-key gtags-mode-map "\er" gtags-find-rtag) (define-key gtags-mode-map "\es" gtags-find-symbol) (define-key gtags-mode-map "\e*" gtags-pop-stack) ) ) (add-hook c-mode-common-hook (lambda () (gtags-mode 1) (gtags-make-complete-list) ) ) う、表示がおかしい。。。 -- seg_fault (2006-12-14 00 24 15) 名前 コメント